package com.frank.oj.service.oj;

import com.frank.oj.common.result.CommonResult;
import com.frank.oj.model.dto.ChangeEmailDTO;
import com.frank.oj.model.dto.ChangePasswordDTO;
import com.frank.oj.model.dto.CheckUsernameOrEmailDTO;
import com.frank.oj.model.vo.*;

import javax.servlet.http.HttpServletRequest;

/**
 * @author frank
 * @Date 2024/1/25
 */
public interface AccountService {
    CommonResult<UserAuthInfoVO> getUserAuthInfo();

    CommonResult<CheckUsernameOrEmailVO> checkUsernameOrEmail(CheckUsernameOrEmailDTO checkUsernameOrEmailDTO);

    CommonResult<UserHomeVO> getUserHomeInfo(String uid, String username);

    CommonResult<UserCalendarHeatmapVO> getUserCalendarHeatmap(String uid, String username);

    CommonResult<UserInfoVO> changeUserInfo(UserInfoVO userInfoVo);

    CommonResult<ChangeAccountVO> changePassword(ChangePasswordDTO changePasswordDto, HttpServletRequest request);

    CommonResult<Void> getChangeEmailCode(String email);

    CommonResult<ChangeAccountVO> changeEmail(ChangeEmailDTO changeEmailDto);
}
